package com.xsd.singleton;

/**
 * @Description: 单例模式  懒汉式 (线程不安全）
 * @Author: zhoufuzong
 * @Created: 2021-01-23 11:46:52
 * @Version: 1.1.0
 */

/**
 * 优缺点说明：
 * 1) 起到了Lazy Loading的效果，但是只能在单线程下使用。
 * 2) 如果在多线程下，一个线程进入了if (singleton == null)判断语句块，还未来得及
 * 往下执行，另一个线程也通过了这个判断语句，这时便会产生多个实例。所以
 * 在多线程环境下不可使用这种方式
 * 3) 结论：在实际开发中，不要使用这种方式.
 */
public class SingletonTest3 {

    public static void main(String[] args) {
       Singleton3 singleton3 = Singleton3.getInstance();
       Singleton3 singleton31 = Singleton3.getInstance();
        System.out.println(singleton3 == singleton31);
    }
}


class Singleton3{

    // 1. 构造器私有化
    private Singleton3(){
    }

    // 2. 本类内部创建对象实例
     private  static Singleton3 singleton ;

    public static Singleton3 getInstance(){
        if(singleton==null){
            singleton = new Singleton3();
        }

        return  singleton;
    }

}
